/* SVN FILE: $Id: validation.js 23 2008-07-08 12:56:56Z celobandster $ */
/**
* Application : The Javascript MVC Framework
*
* @package application.core
* @subpackage cookie
* @author 			$Author: celobandster $
* @copyright 		(c) Rafael Bandeira, Marcelo Condotta, Henrique Condotta. All Rights Reserved.
* @version 			$Revision: 23 $
* @lastrevision 	$Date: 2008-07-08 12:56:56 +0000 (Tue, 08 Jul 2008) $
* @modifiedby 		$LastChangedBy: celobandster $
* @lastmodified 	$LastChangedDate: 2008-07-08 12:56:56 +0000 (Tue, 08 Jul 2008) $
* @license 			The MIT License [http://www.opensource.org/licenses/mit-license.php]
* @filesource 		$URL: http://jsmvcapplication.googlecode.com/svn/trunk/application/test/cases/core/validation.js $
*/

var ValidationTest = new Object(
{
	initialize : function()
	{
		for(prop in this)
		{
			if(prop.match(/Expressions/))
			{
				expression = (prop.substr(25).underscore().dasherize()).camelize();
				this[prop] = this.__testExpression.curry(expression).wrap(this[prop]);
			}
			else if (prop.match(/Validation/))
			{
				testfunc = (prop.substr(14).underscore().dasherize()).camelize();
				this[prop] = this.__test.curry(testfunc).wrap(this[prop]);
			}
		}
	},
	testValidationExpressionsEmail : function(proceed)
	{
		var matches = new Object(
		{
			dummy	   		: 'abc.efg@domain.com',
			dummy1	   		: 'efg@domain.com',
			dummy2	   		: 'abc-efg@domain.com',
			dummy3	   		: 'abc_efg@domain.com',
			dummy4	   		: 'raw@test.ra.ru',
			dummy5	   		: 'abc-efg@domain-hyphened.com',
			dummy6	   		: "p.o'malley@domain.com",
			dummy7	   		: 'abc+efg@domain.com',
			dummy8	   		: 'abc&efg@domain.com',
			dummy9	   		: 'abc.efg@12345.com',
			dummy10	   		: 'abc.efg@12345.co.jp',
			dummy11	   		: 'abc@g.cn',
			dummy12	   		: 'abc@x.com',

		// all ICANN TLDs
			dummy13	   		: 'abc@example.aero',
			dummy14	   		: 'abc@example.asia',
			dummy15	   		: 'abc@example.biz',
			dummy16	   		: 'abc@example.cat',
			dummy17	   		: 'abc@example.com',
			dummy18	   		: 'abc@example.coop',
			dummy19	   		: 'abc@example.edu',
			dummy20	   		: 'abc@example.gov',
			dummy21	   		: 'abc@example.info',
			dummy22	   		: 'abc@example.int',
			dummy23	   		: 'abc@example.jobs',
			dummy24	   		: 'abc@example.mil',
			dummy25	   		: 'abc@example.mobi',
			dummy26	   		: 'abc@example.museum',
			dummy27	   		: 'abc@example.name',
			dummy28	   		: 'abc@example.net',
			dummy29	   		: 'abc@example.org',
			dummy30	   		: 'abc@example.pro',
			dummy31	   		: 'abc@example.tel',
			dummy32	   		: 'abc@example.travel',

		// strange, but technically valid email addresses
			dummy33	   		: 'S=postmaster/OU=rz/P=uni-frankfurt/A=d400/C=de@gateway.d400.de',
			dummy34	   		: 'customer/department=shipping@example.com',
			dummy35	   		: '$A12345@example.com',
			dummy36	   		: '!def!xyz%abc@example.com',
			dummy37	   		: '_somename@example.com',
			simple   		: 'application@jsmvc.com',
			locale   		: 'application@jsmvc.com.br',
			foldered 		: 'application+folder@gmail.com',
			longExtension 	: 'application@gmail.museum',
			dotted   		: 'application.mvc@gmail.com',
			dashed			: 'app-mvc-js@google.code.com',
			underscored		: 'app_mv_js@google.com'
		});
		var falseMatches = new Object(
		{
			dummy	   		: 'abc@example',
			dummy1	   		: 'abc@example.c',
			dummy2	   		: 'abc@example.com.',
			dummy3	   		: 'abc.@example.com',
			dummy4	   		: 'abc@example..com',
			dummy5	   		: 'abc@example.com.a',
			dummy6	   		: 'abc@example.toolong',
			dummy7	   		: 'abc;@example.com',
			dummy8	   		: 'abc@example.com;',
			dummy9	   		: 'abc@efg@example.com',
			dummy10	   		: 'abc@@example.com',
			dummy11	   		: 'abc efg@example.com',
			dummy12	   		: 'abc,efg@example.com',
			dummy13	   		: 'abc@sub,example.com',
			dummy14	   		: 'abc@sub\'example.com',
			dummy15	   		: 'abc@sub/example.com',
			dummy16	   		: 'abc@yahoo!.com',
			dummy17	   		: 'Nyrée.surname@example.com',
			dummy18	   		: 'abc@example_underscored.com',
			dummy19	   		: 'raw@test.ra.ru....com'
		});
		proceed(matches, falseMatches);
	},
	testValidationExpressionsUrl : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: 'http://www.cakephp.org',
			dummy1 			: 'http://cakephp.org',
			dummy2 			: 'http://www.cakephp.org/somewhere#anchor',
			dummy3 			: 'http://192.168.0.1',
			dummy4 			: 'https://www.cakephp.org',
			dummy5 			: 'https://cakephp.org',
			dummy6 			: 'https://www.cakephp.org/somewhere#anchor',
			dummy7 			: 'https://192.168.0.1',
			dummy8 			: 'ftps://www.cakephp.org/pub/cake',
			dummy9 			: 'ftps://cakephp.org/pub/cake',
			dummy10 		: 'ftps://192.168.0.1/pub/cake',
			dummy11 		: 'ftp://www.cakephp.org/pub/cake',
			dummy12			: 'ftp://cakephp.org/pub/cake',
			dummy13			: 'ftp://192.168.0.1/pub/cake',
			dummy14			: 'https://my.domain.com/gizmo/app?class=MySip;proc=start',
			dummy15			: 'www.domain.tld',
			dummy16			: 'http://123456789112345678921234567893123456789412345678951234567896123.com',
			dummy17			: 'http://www.domain.com/blogs/index.php?blog=6&tempskin=_rss2',
			http	   		: 'http://google.com',
			https   		: 'https://svn.repositories.com',
			ftp		 		: 'ftp://code.datadrome.net',
			ftps		 	: 'ftps://code.datadrome.net',
			no_protocol		: 'google.com',
			query			: 'http://google.com/?s=weather&comma=true',
			hash			: 'http://google.com/#page_top',
			wiki_style		: 'wikipedia.com/Programming:MVC',
			file_extension	: 'jsninjas.net/see-me-holding-mine.js',
			tilde_id		: 'http://ufrgs.br/mat/~cida',
			dashed			: 'no-ip.com',
			complex			: 'http://del.icio.us.com/pasta:colecaoo/~identifier.action.php?var1=rafael&rafael=var2#hash:comeca'			
		});
		var falseMatches = new Object(
		{
			dummy 			: 'ftps://256.168.0.1/pub/cake',
			dummy1 			: 'ftp://256.168.0.1/pub/cake',
			dummy2 			: 'http://w_w.domain.co_m',
			dummy3 			: 'http://www.domain.12com',
			dummy4 			: 'http://www.domain.longttldnotallowed',
			dummy5 			: 'http://www.-invaliddomain.tld',
			dummy6 			: 'http://www.domain.-invalidtld',
			dummy7 			: 'http://this-domain-is-too-loooooong-by-icann-rules-maximum-length-is-63.com',
			dummy8 			: 'ww5.tedbooleano.com.bounceme'
		});
		proceed(matches, falseMatches);
	},
	testValidationExpressionsAlphaNumeric : function(proceed)
	{
		var matches = new Object(
		{
			dummy	   		: 'test',
			dummy1   		: '123test',
			dummy2	 		: 'test123',
			dummy3		 	: 'te123st'
		});
		var falseMatches = new Object(
		{
			dummy	   		: '12 234',
			dummy1   		: 'dfd 234',
			dummy2	 		: '\n',
			dummy3		 	: '\t',
			dummy4		 	: '\r',
			dummy5		 	: '',
			dummy6		 	: ' '
		});
		proceed(matches, falseMatches);
	},
	testValidationExpressionsPhone : function(proceed)
	{
		var matches = new Object(
		{
			dummy	   		: '051 33445566',
			dummy1   		: '011-3344-5566',
			dummy2	 		: '021.3344.5566',
			dummy3		 	: '041 3344 5566',
			dummy4			: '06133445566'
		});
		var falseMatches = new Object(
		{
			dummy	   		: '3344 5566 ',
			dummy1   		: '3344556',
			dummy2	 		: '99933445566',
			dummy3		 	: '123-3344-5566'
		});
		proceed(matches, falseMatches);
	},
	testValidationExpressionsTime : function(proceed)
	{
		var matches = new Object(
		{
			dummy	   		: '12:05',
			dummy1   		: '12:05:30',
			dummy2	 		: '05:30AM',
			dummy3		 	: '23:11',
			dummy4			: '07:55PM',
			dummy5			: '07:55 PM',
			dummy6			: '07:55 AM',
			dummy7			: '07:55pm',
			dummy8			: '07:55am',
			dummy9	   		: '00:00',
			dummy10	   		: '23:59',
			dummy12	   		: '12:00',
			dummy13	   		: '12:01',
			dummy14	   		: '12:01am',
			dummy15	   		: '12:01pm',
			dummy16	   		: '1pm',
			dummy17	   		: '01:00'
		});
		var falseMatches = new Object(
		{
			dummy	   		: '18:90',
			dummy1   		: '17:33 AM',
			dummy2	 		: '12:34:88',
			dummy3		 	: '30:30:30',
			dummy4			: '07:55pM',
			dummy5			: '07:55Am',
			dummy6	   		: '1:00',
//			dummy7	   		: '1:00pm',
			dummy8	   		: '13:00pm',
			dummy9	   		: '9:00',
			dummy11	   		: '24:00'
		});
		proceed(matches, falseMatches);
	},
	testValidationExpressionsIp : function(proceed)
	{
		var matches = new Object(
		{
			dummy	   		: '0.0.0.0',
			dummy1	   		: '192.168.1.156',
			dummy2	   		: '255.255.255.255'
		});
		var falseMatches = new Object(
		{
			dummy	   		: '127.0.0',
			dummy1	   		: '127.0.0.a',
			dummy2	   		: '127.0.0.256'
		});
		proceed(matches, falseMatches);
	},
	testValidationDecimal : function(proceed)
	{
		var matches = new Object(
		{
			dummy			: '+1234.54321',
			dummy1   		: '-1234.54321',
			dummy2   		: '1234.54321',
			dummy3   		: '+0123.45e6',
			dummy4   		: '-0123.45e6',
			dummy5   		: '0123.45e6',
			dummy6   		: {arg1 : '.27', arg2 : '2'},
			dummy7   		: {arg1 : .27, arg2 : 2},
			dummy8   		: {arg1 : -.27, arg2 : 2},
			dummy9   		: {arg1 : +.27, arg2 : 2},
			dummy10   		: {arg1 : '.277', arg2 : '3'},
			dummy11  		: {arg1 : .277, arg2 : 3},
			dummy12   		: {arg1 : -.277, arg2 : 3},
			dummy13   		: {arg1 : +.277, arg2 : 3},
			dummy14   		: {arg1 : '1234.5678', arg2	: '4'},
			dummy15   		: {arg1 : 1234.5678, arg2 : 4},
			dummy16   		: {arg1 : -1234.5678, arg2 : 4},
			dummy17   		: {arg1 : +1234.5678, arg2 : 4}
		});
		var falseMatches = new Object(
		{
			dummy			: 'string',
			dummy1			: 1234,
			dummy2			: '-1234',
			dummy3			: '+1234',
			dummy4			: {arg1 : '1234.5678', arg2	: '3'},
			dummy5			: {arg1 : 1234.5678, arg2 : 3},
			dummy6			: {arg1 : -1234.5678, arg2 : 3},
			dummy7			: {arg1 : +1234.5678, arg2 : 3}
		});
		proceed(matches, falseMatches);
	},
	testValidationEmpty : function(proceed)
	{
		var matches = new Object(
		{
			empty	   		: '',
			nullValue  		: null,
			zero	 		: 0,
			space		 	: ' ',
			nullArray		: [],
			newLine	 		: '\n',
			tab			 	: '\t',
			carrRet		 	: '\r'
		});
		var falseMatches = new Object(
		{
			dummy 			: 'test',
			dummy1 			: ' test',
			dummy2 			: '0 test',
			dummy3			: 'null test'
		});
		proceed(matches, falseMatches);
	},
	testValidationEqualTo : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: {arg1 : "1", arg2 : "1"},
			dummy1 			: {arg1 : 1, arg2 : 1},
			dummy2 			: {arg1 : "0", arg2 : "0"},
			dummy3 			: {arg1 : 0, arg2 : 0},
			dummy4 			: {arg1 : true, arg2 : true},
			dummy5 			: {arg1 : false, arg2 : false},
			dummy6 			: {arg1 : null, arg2 : null}
		});
		var falseMatches = new Object(
		{
			dummy 			: {arg1 : 1, arg2 : "1"},
			dummy1 			: {arg1 : "", arg2 : null},
			dummy2 			: {arg1 : "", arg2 : false},
			dummy3 			: {arg1 : 0, arg2 : false},
			dummy4 			: {arg1 : null, arg2 : false} 
		});
		proceed(matches, falseMatches);
	},
	testValidationBetween : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: {arg1 : 'abcdefg', arg2 : 1, arg3 : 7},
			dummy1 			: {arg1 : '', arg2 : 0, arg3 : 7}
		});
		var falseMatches = new Object(
		{
			dummy 			: {arg1 : 'abcdefg', arg2 : 1, arg3 : 6}
		});
		proceed(matches, falseMatches);
	},
	testValidationCc : function(proceed)
	{
		var matches = new Object(
		{
			//American Express
			dummy 			: {arg1 : '370482756063980', arg2: 'amex'},
			dummy1 			: {arg1 : '349106433773483', arg2: 'amex'},
			dummy2 			: {arg1 : '344671486204764', arg2: 'amex'},
			dummy3 			: {arg1 : '344042544509943', arg2: 'amex'},
			dummy4 			: {arg1 : '377147515754475', arg2: 'amex'},
			dummy5 			: {arg1 : '375239372816422', arg2: 'amex'},
			dummy6 			: {arg1 : '376294341957707', arg2: 'amex'},
			dummy7 			: {arg1 : '341779292230411', arg2: 'amex'},
			dummy8 			: {arg1 : '341646919853372', arg2: 'amex'},
			dummy9 			: {arg1 : '348498616319346', arg2: 'amex'},
			//BankCard
			dummy10			: {arg1 : '5610745867413420', arg2: 'bankcard'},
			dummy11			: {arg1 : '5610376649499352', arg2: 'bankcard'},
			dummy12			: {arg1 : '5610091936000694', arg2: 'bankcard'},
			dummy13			: {arg1 : '5602248780118788', arg2: 'bankcard'},
			dummy14			: {arg1 : '5610631567676765', arg2: 'bankcard'},
			dummy15			: {arg1 : '5602238211270795', arg2: 'bankcard'},
			dummy16			: {arg1 : '5610173951215470', arg2: 'bankcard'},
			dummy17			: {arg1 : '5610139705753702', arg2: 'bankcard'},
			dummy18			: {arg1 : '5602226032150551', arg2: 'bankcard'},
			dummy19			: {arg1 : '5602223993735777', arg2: 'bankcard'},
			//Diners Club 14
			dummy20			: {arg1 : '30155483651028', arg2: 'diners'},
			dummy21			: {arg1 : '36371312803821', arg2: 'diners'},
			dummy22			: {arg1 : '38801277489875', arg2: 'diners'},
			dummy23			: {arg1 : '30348560464296', arg2: 'diners'},
			dummy24			: {arg1 : '30349040317708', arg2: 'diners'},
			dummy25			: {arg1 : '36567413559978', arg2: 'diners'},
			dummy26			: {arg1 : '36051554732702', arg2: 'diners'},
			dummy27			: {arg1 : '30391842198191', arg2: 'diners'},
			dummy28			: {arg1 : '30172682197745', arg2: 'diners'},
			dummy29			: {arg1 : '30162056566641', arg2: 'diners'},
			dummy30			: {arg1 : '30085066927745', arg2: 'diners'},
			dummy31			: {arg1 : '36519025221976', arg2: 'diners'},
			dummy32			: {arg1 : '30372679371044', arg2: 'diners'},
			dummy33			: {arg1 : '38913939150124', arg2: 'diners'},
			dummy34			: {arg1 : '36852899094637', arg2: 'diners'},
			dummy35			: {arg1 : '30138041971120', arg2: 'diners'},
			dummy36			: {arg1 : '36184047836838', arg2: 'diners'},
			dummy37			: {arg1 : '30057460264462', arg2: 'diners'},
			dummy38			: {arg1 : '38980165212050', arg2: 'diners'},
			dummy39			: {arg1 : '30356516881240', arg2: 'diners'},
			dummy40			: {arg1 : '38744810033182', arg2: 'diners'},
			dummy41			: {arg1 : '30173638706621', arg2: 'diners'},
			dummy42			: {arg1 : '30158334709185', arg2: 'diners'},
			dummy43			: {arg1 : '30195413721186', arg2: 'diners'},
			dummy44			: {arg1 : '38863347694793', arg2: 'diners'},
			dummy45			: {arg1 : '30275627009113', arg2: 'diners'},
			dummy46			: {arg1 : '30242860404971', arg2: 'diners'},
			dummy47			: {arg1 : '30081877595151', arg2: 'diners'},
			dummy48			: {arg1 : '38053196067461', arg2: 'diners'},
			dummy49			: {arg1 : '36520379984870', arg2: 'diners'},
			//2004 MasterCard/Diners Club Alliance International 14
			dummy50			: {arg1 : '36747701998969', arg2: 'diners'},
			dummy51			: {arg1 : '36427861123159', arg2: 'diners'},
			dummy52			: {arg1 : '36150537602386', arg2: 'diners'},
			dummy53			: {arg1 : '36582388820610', arg2: 'diners'},
			dummy54			: {arg1 : '36729045250216', arg2: 'diners'},
			//2004 MasterCard/Diners Club Alliance US & Canada 16
			dummy55			: {arg1 : '5597511346169950', arg2: 'diners'},
			dummy56			: {arg1 : '5526443162217562', arg2: 'diners'},
			dummy57			: {arg1 : '5577265786122391', arg2: 'diners'},
			dummy58			: {arg1 : '5534061404676989', arg2: 'diners'},
			dummy59			: {arg1 : '5545313588374502', arg2: 'diners'},
			//Discover
			dummy60			: {arg1 : '6011802876467237', arg2: 'disc'},
			dummy61			: {arg1 : '6506432777720955', arg2: 'disc'},
			dummy62			: {arg1 : '6011126265283942', arg2: 'disc'},
			dummy63			: {arg1 : '6502187151579252', arg2: 'disc'},
			dummy64			: {arg1 : '6506600836002298', arg2: 'disc'},
			dummy65			: {arg1 : '6504376463615189', arg2: 'disc'},
			dummy66			: {arg1 : '6011440907005377', arg2: 'disc'},
			dummy67			: {arg1 : '6509735979634270', arg2: 'disc'},
			dummy68			: {arg1 : '6011422366775856', arg2: 'disc'},
			dummy69			: {arg1 : '6500976374623323', arg2: 'disc'},
			//enRoute
			dummy70			: {arg1 : '201496944158937', arg2: 'enroute'},
			dummy71			: {arg1 : '214945833739665', arg2: 'enroute'},
			dummy72			: {arg1 : '214982692491187', arg2: 'enroute'},
			dummy73			: {arg1 : '214901395949424', arg2: 'enroute'},
			dummy74			: {arg1 : '201480676269187', arg2: 'enroute'},
			dummy75			: {arg1 : '214911922887807', arg2: 'enroute'},
			dummy76			: {arg1 : '201485025457250', arg2: 'enroute'},
			dummy77			: {arg1 : '201402662758866', arg2: 'enroute'},
			dummy78			: {arg1 : '214981579370225', arg2: 'enroute'},
			dummy79			: {arg1 : '201447595859877', arg2: 'enroute'},
			//JCB 15 digit
			dummy80			: {arg1 : '210034762247893', arg2: 'jcb'},
			dummy81			: {arg1 : '180078671678892', arg2: 'jcb'},
			dummy82			: {arg1 : '180010559353736', arg2: 'jcb'},
			dummy83			: {arg1 : '210095474464258', arg2: 'jcb'},
			dummy84			: {arg1 : '210006675562188', arg2: 'jcb'},
			dummy85			: {arg1 : '210063299662662', arg2: 'jcb'},
			dummy86			: {arg1 : '180032506857825', arg2: 'jcb'},
			dummy87			: {arg1 : '210057919192738', arg2: 'jcb'},
			dummy88			: {arg1 : '180031358949367', arg2: 'jcb'},
			dummy89			: {arg1 : '180033802147846', arg2: 'jcb'},
			//JCB 16 digit
			dummy90			: {arg1 : '3096806857839939', arg2: 'jcb'},
			dummy91			: {arg1 : '3158699503187091', arg2: 'jcb'},
			dummy92			: {arg1 : '3112549607186579', arg2: 'jcb'},
			dummy93			: {arg1 : '3112332922425604', arg2: 'jcb'},
			dummy94			: {arg1 : '3112001541159239', arg2: 'jcb'},
			dummy95			: {arg1 : '3112162495317841', arg2: 'jcb'},
			dummy96			: {arg1 : '3337562627732768', arg2: 'jcb'},
			dummy97			: {arg1 : '3337107161330775', arg2: 'jcb'},
			dummy98			: {arg1 : '3528053736003621', arg2: 'jcb'},
			dummy99			: {arg1 : '3528915255020360', arg2: 'jcb'},
			dummy100		: {arg1 : '3096786059660921', arg2: 'jcb'},
			dummy101		: {arg1 : '3528264799292320', arg2: 'jcb'},
			dummy102		: {arg1 : '3096469164130136', arg2: 'jcb'},
			dummy103		: {arg1 : '3112127443822853', arg2: 'jcb'},
			dummy104		: {arg1 : '3096849995802328', arg2: 'jcb'},
			dummy105		: {arg1 : '3528090735127407', arg2: 'jcb'},
			dummy106		: {arg1 : '3112101006819234', arg2: 'jcb'},
			dummy107		: {arg1 : '3337444428040784', arg2: 'jcb'},
			dummy108		: {arg1 : '3088043154151061', arg2: 'jcb'},
			dummy109		: {arg1 : '3088295969414866', arg2: 'jcb'},
			dummy110		: {arg1 : '3158748843158575', arg2: 'jcb'},
			dummy111		: {arg1 : '3158709206148538', arg2: 'jcb'},
			dummy112		: {arg1 : '3158365159575324', arg2: 'jcb'},
			dummy113		: {arg1 : '3158671691305165', arg2: 'jcb'},
			dummy114		: {arg1 : '3528523028771093', arg2: 'jcb'},
			dummy115		: {arg1 : '3096057126267870', arg2: 'jcb'},
			dummy116		: {arg1 : '3158514047166834', arg2: 'jcb'},
			dummy117		: {arg1 : '3528274546125962', arg2: 'jcb'},
			dummy118		: {arg1 : '3528890967705733', arg2: 'jcb'},
			dummy119		: {arg1 : '3337198811307545', arg2: 'jcb'},
			//Maestro (debit card)
			dummy120		: {arg1 : '5020147409985219', arg2: 'maestro'},
			dummy121		: {arg1 : '5020931809905616', arg2: 'maestro'},
			dummy122		: {arg1 : '5020412965470224', arg2: 'maestro'},
			dummy123		: {arg1 : '5020129740944022', arg2: 'maestro'},
			dummy124		: {arg1 : '5020024696747943', arg2: 'maestro'},
			dummy125		: {arg1 : '5020581514636509', arg2: 'maestro'},
			dummy126		: {arg1 : '5020695008411987', arg2: 'maestro'},
			dummy127		: {arg1 : '5020565359718977', arg2: 'maestro'},
			dummy128		: {arg1 : '6339931536544062', arg2: 'maestro'},
			dummy129		: {arg1 : '6465028615704406', arg2: 'maestro'},
			//Mastercard
			dummy130		: {arg1 : '5580424361774366', arg2: 'mc'},
			dummy131		: {arg1 : '5589563059318282', arg2: 'mc'},
			dummy132		: {arg1 : '5387558333690047', arg2: 'mc'},
			dummy133		: {arg1 : '5163919215247175', arg2: 'mc'},
			dummy134		: {arg1 : '5386742685055055', arg2: 'mc'},
			dummy135		: {arg1 : '5102303335960674', arg2: 'mc'},
			dummy136		: {arg1 : '5526543403964565', arg2: 'mc'},
			dummy137		: {arg1 : '5538725892618432', arg2: 'mc'},
			dummy138		: {arg1 : '5119543573129778', arg2: 'mc'},
			dummy139		: {arg1 : '5391174753915767', arg2: 'mc'},
			dummy140		: {arg1 : '5510994113980714', arg2: 'mc'},
			dummy141		: {arg1 : '5183720260418091', arg2: 'mc'},
			dummy142		: {arg1 : '5488082196086704', arg2: 'mc'},
			dummy143		: {arg1 : '5484645164161834', arg2: 'mc'},
			dummy144		: {arg1 : '5171254350337031', arg2: 'mc'},
			dummy145		: {arg1 : '5526987528136452', arg2: 'mc'},
			dummy146		: {arg1 : '5504148941409358', arg2: 'mc'},
			dummy147		: {arg1 : '5240793507243615', arg2: 'mc'},
			dummy148		: {arg1 : '5162114693017107', arg2: 'mc'},
			dummy149		: {arg1 : '5163104807404753', arg2: 'mc'},
			dummy150		: {arg1 : '5590136167248365', arg2: 'mc'},
			dummy151		: {arg1 : '5565816281038948', arg2: 'mc'},
			dummy152		: {arg1 : '5467639122779531', arg2: 'mc'},
			dummy153		: {arg1 : '5297350261550024', arg2: 'mc'},
			dummy154		: {arg1 : '5162739131368058', arg2: 'mc'},
			//Solo 16
			dummy155		: {arg1 : '6767432107064987', arg2: 'solo'},
			dummy156		: {arg1 : '6334667758225411', arg2: 'solo'},
			dummy157		: {arg1 : '6767037421954068', arg2: 'solo'},
			dummy158		: {arg1 : '6767823306394854', arg2: 'solo'},
			dummy159		: {arg1 : '6334768185398134', arg2: 'solo'},
			dummy160		: {arg1 : '6767286729498589', arg2: 'solo'},
			dummy161		: {arg1 : '6334972104431261', arg2: 'solo'},
			dummy162		: {arg1 : '6334843427400616', arg2: 'solo'},
			dummy163		: {arg1 : '6767493947881311', arg2: 'solo'},
			dummy164		: {arg1 : '6767194235798817', arg2: 'solo'},
			//Solo 18
			dummy165		: {arg1 : '676714834398858593', arg2: 'solo'},
			dummy166		: {arg1 : '676751666435130857', arg2: 'solo'},
			dummy167		: {arg1 : '676781908573924236', arg2: 'solo'},
			dummy168		: {arg1 : '633488724644003240', arg2: 'solo'},
			dummy169		: {arg1 : '676732252338067316', arg2: 'solo'},
			dummy170		: {arg1 : '676747520084495821', arg2: 'solo'},
			dummy171		: {arg1 : '633465488901381957', arg2: 'solo'},
			dummy172		: {arg1 : '633487484858610484', arg2: 'solo'},
			dummy173		: {arg1 : '633453764680740694', arg2: 'solo'},
			dummy174		: {arg1 : '676768613295414451', arg2: 'solo'},
			//Solo 19
			dummy175		: {arg1 : '6767838565218340113', arg2: 'solo'},
			dummy176		: {arg1 : '6767760119829705181', arg2: 'solo'},
			dummy177		: {arg1 : '6767265917091593668', arg2: 'solo'},
			dummy178		: {arg1 : '6767938856947440111', arg2: 'solo'},
			dummy179		: {arg1 : '6767501945697390076', arg2: 'solo'},
			dummy180		: {arg1 : '6334902868716257379', arg2: 'solo'},
			dummy181		: {arg1 : '6334922127686425532', arg2: 'solo'},
			dummy182		: {arg1 : '6334933119080706440', arg2: 'solo'},
			dummy183		: {arg1 : '6334647959628261714', arg2: 'solo'},
			dummy184		: {arg1 : '6334527312384101382', arg2: 'solo'},
			//Switch 16
			dummy185		: {arg1 : '5641829171515733', arg2: 'switch'},
			dummy186		: {arg1 : '5641824852820809', arg2: 'switch'},
			dummy187		: {arg1 : '6759129648956909', arg2: 'switch'},
			dummy188		: {arg1 : '6759626072268156', arg2: 'switch'},
			dummy189		: {arg1 : '5641822698388957', arg2: 'switch'},
			dummy190		: {arg1 : '5641827123105470', arg2: 'switch'},
			dummy191		: {arg1 : '5641823755819553', arg2: 'switch'},
			dummy192		: {arg1 : '5641821939587682', arg2: 'switch'},
			dummy193		: {arg1 : '4936097148079186', arg2: 'switch'},
			dummy194		: {arg1 : '5641829739125009', arg2: 'switch'},
			dummy195		: {arg1 : '5641822860725507', arg2: 'switch'},
			dummy196		: {arg1 : '4936717688865831', arg2: 'switch'},
			dummy197		: {arg1 : '6759487613615441', arg2: 'switch'},
			dummy198		: {arg1 : '5641821346840617', arg2: 'switch'},
			dummy199		: {arg1 : '5641825793417126', arg2: 'switch'},
			dummy200		: {arg1 : '5641821302759595', arg2: 'switch'},
			dummy201		: {arg1 : '6759784969918837', arg2: 'switch'},
			dummy202		: {arg1 : '5641824910667036', arg2: 'switch'},
			dummy203		: {arg1 : '6759139909636173', arg2: 'switch'},
			dummy204		: {arg1 : '6333425070638022', arg2: 'switch'},
			dummy205		: {arg1 : '5641823910382067', arg2: 'switch'},
			dummy206		: {arg1 : '4936295218139423', arg2: 'switch'},
			dummy207		: {arg1 : '6333031811316199', arg2: 'switch'},
			dummy208		: {arg1 : '4936912044763198', arg2: 'switch'},
			dummy209		: {arg1 : '4936387053303824', arg2: 'switch'},
			dummy210		: {arg1 : '6759535838760523', arg2: 'switch'},
			dummy211		: {arg1 : '6333427174594051', arg2: 'switch'},
			dummy212		: {arg1 : '5641829037102700', arg2: 'switch'},
			dummy213		: {arg1 : '5641826495463046', arg2: 'switch'},
			dummy214		: {arg1 : '6333480852979946', arg2: 'switch'},
			dummy215		: {arg1 : '5641827761302876', arg2: 'switch'},
			dummy216		: {arg1 : '5641825083505317', arg2: 'switch'},
			dummy217		: {arg1 : '6759298096003991', arg2: 'switch'},
			dummy218		: {arg1 : '4936119165483420', arg2: 'switch'},
			dummy219		: {arg1 : '4936190990500993', arg2: 'switch'},
			dummy220		: {arg1 : '4903356467384927', arg2: 'switch'},
			dummy221		: {arg1 : '6333372765092554', arg2: 'switch'},
			dummy222		: {arg1 : '5641821330950570', arg2: 'switch'},
			dummy223		: {arg1 : '6759841558826118', arg2: 'switch'},
			dummy224		: {arg1 : '4936164540922452', arg2: 'switch'},
			//Switch 18
			dummy225		: {arg1 : '493622764224625174', arg2: 'switch'},
			dummy226		: {arg1 : '564182823396913535', arg2: 'switch'},
			dummy227		: {arg1 : '675917308304801234', arg2: 'switch'},
			dummy228		: {arg1 : '675919890024220298', arg2: 'switch'},
			dummy229		: {arg1 : '633308376862556751', arg2: 'switch'},
			dummy230		: {arg1 : '564182377633208779', arg2: 'switch'},
			dummy231		: {arg1 : '564182870014926787', arg2: 'switch'},
			dummy232		: {arg1 : '675979788553829819', arg2: 'switch'},
			dummy233		: {arg1 : '493668394358130935', arg2: 'switch'},
			dummy234		: {arg1 : '493637431790930965', arg2: 'switch'},
			dummy235		: {arg1 : '633321438601941513', arg2: 'switch'},
			dummy236		: {arg1 : '675913800898840986', arg2: 'switch'},
			dummy237		: {arg1 : '564182592016841547', arg2: 'switch'},
			dummy238		: {arg1 : '564182428380440899', arg2: 'switch'},
			dummy239		: {arg1 : '493696376827623463', arg2: 'switch'},
			dummy240		: {arg1 : '675977939286485757', arg2: 'switch'},
			dummy241		: {arg1 : '490302699502091579', arg2: 'switch'},
			dummy242		: {arg1 : '564182085013662230', arg2: 'switch'},
			dummy243		: {arg1 : '493693054263310167', arg2: 'switch'},
			dummy244		: {arg1 : '633321755966697525', arg2: 'switch'},
			dummy245		: {arg1 : '675996851719732811', arg2: 'switch'},
			dummy246		: {arg1 : '493699211208281028', arg2: 'switch'},
			dummy247		: {arg1 : '493697817378356614', arg2: 'switch'},
			dummy248		: {arg1 : '675968224161768150', arg2: 'switch'},
			dummy249		: {arg1 : '493669416873337627', arg2: 'switch'},
			dummy250		: {arg1 : '564182439172549714', arg2: 'switch'},
			dummy251		: {arg1 : '675926914467673598', arg2: 'switch'},
			dummy252		: {arg1 : '564182565231977809', arg2: 'switch'},
			dummy253		: {arg1 : '675966282607849002', arg2: 'switch'},
			dummy254		: {arg1 : '493691609704348548', arg2: 'switch'},
			dummy255		: {arg1 : '675933118546065120', arg2: 'switch'},
			dummy256		: {arg1 : '493631116677238592', arg2: 'switch'},
			dummy257		: {arg1 : '675921142812825938', arg2: 'switch'},
			dummy258		: {arg1 : '633338311815675113', arg2: 'switch'},
			dummy259		: {arg1 : '633323539867338621', arg2: 'switch'},
			dummy260		: {arg1 : '675964912740845663', arg2: 'switch'},
			dummy261		: {arg1 : '633334008833727504', arg2: 'switch'},
			dummy262		: {arg1 : '493631941273687169', arg2: 'switch'},
			dummy263		: {arg1 : '564182971729706785', arg2: 'switch'},
			dummy264		: {arg1 : '633303461188963496', arg2: 'switch'},
			//Switch 19
			dummy265		: {arg1 : '6759603460617628716', arg2: 'switch'},
			dummy266		: {arg1 : '4936705825268647681', arg2: 'switch'},
			dummy267		: {arg1 : '5641829846600479183', arg2: 'switch'},
			dummy268		: {arg1 : '6759389846573792530', arg2: 'switch'},
			dummy269		: {arg1 : '4936189558712637603', arg2: 'switch'},
			dummy270		: {arg1 : '5641822217393868189', arg2: 'switch'},
			dummy271		: {arg1 : '4903075563780057152', arg2: 'switch'},
			dummy272		: {arg1 : '4936510653566569547', arg2: 'switch'},
			dummy273		: {arg1 : '4936503083627303364', arg2: 'switch'},
			dummy274		: {arg1 : '4936777334398116272', arg2: 'switch'},
			dummy275		: {arg1 : '5641823876900554860', arg2: 'switch'},
			dummy276		: {arg1 : '6759619236903407276', arg2: 'switch'},
			dummy277		: {arg1 : '6759011470269978117', arg2: 'switch'},
			dummy278		: {arg1 : '6333175833997062502', arg2: 'switch'},
			dummy279		: {arg1 : '6759498728789080439', arg2: 'switch'},
			dummy280		: {arg1 : '4903020404168157841', arg2: 'switch'},
			dummy281		: {arg1 : '6759354334874804313', arg2: 'switch'},
			dummy282		: {arg1 : '6759900856420875115', arg2: 'switch'},
			dummy283		: {arg1 : '5641827269346868860', arg2: 'switch'},
			dummy284		: {arg1 : '5641828995047453870', arg2: 'switch'},
			dummy285		: {arg1 : '6333321884754806543', arg2: 'switch'},
			dummy286		: {arg1 : '6333108246283715901', arg2: 'switch'},
			dummy287		: {arg1 : '6759572372800700102', arg2: 'switch'},
			dummy288		: {arg1 : '4903095096797974933', arg2: 'switch'},
			dummy289		: {arg1 : '6333354315797920215', arg2: 'switch'},
			dummy290		: {arg1 : '6759163746089433755', arg2: 'switch'},
			dummy291		: {arg1 : '6759871666634807647', arg2: 'switch'},
			dummy292		: {arg1 : '5641827883728575248', arg2: 'switch'},
			dummy293		: {arg1 : '4936527975051407847', arg2: 'switch'},
			dummy294		: {arg1 : '5641823318396882141', arg2: 'switch'},
			dummy295		: {arg1 : '6759123772311123708', arg2: 'switch'},
			dummy296		: {arg1 : '4903054736148271088', arg2: 'switch'},
			dummy297		: {arg1 : '4936477526808883952', arg2: 'switch'},
			dummy298		: {arg1 : '4936433964890967966', arg2: 'switch'},
			dummy299		: {arg1 : '6333245128906049344', arg2: 'switch'},
			dummy300		: {arg1 : '4936321036970553134', arg2: 'switch'},
			dummy301		: {arg1 : '4936111816358702773', arg2: 'switch'},
			dummy302		: {arg1 : '4936196077254804290', arg2: 'switch'},
			dummy303		: {arg1 : '6759558831206830183', arg2: 'switch'},
			dummy304		: {arg1 : '5641827998830403137', arg2: 'switch'},
			//VISA 13 digit
			dummy305		: {arg1 : '4024007174754', arg2: 'visa'},
			dummy306		: {arg1 : '4104816460717', arg2: 'visa'},
			dummy307		: {arg1 : '4716229700437', arg2: 'visa'},
			dummy308		: {arg1 : '4539305400213', arg2: 'visa'},
			dummy309		: {arg1 : '4728260558665', arg2: 'visa'},
			dummy310		: {arg1 : '4929100131792', arg2: 'visa'},
			dummy311		: {arg1 : '4024007117308', arg2: 'visa'},
			dummy312		: {arg1 : '4539915491024', arg2: 'visa'},
			dummy313		: {arg1 : '4539790901139', arg2: 'visa'},
			dummy314		: {arg1 : '4485284914909', arg2: 'visa'},
			dummy315		: {arg1 : '4782793022350', arg2: 'visa'},
			dummy316		: {arg1 : '4556899290685', arg2: 'visa'},
			dummy317		: {arg1 : '4024007134774', arg2: 'visa'},
			dummy318		: {arg1 : '4333412341316', arg2: 'visa'},
			dummy319		: {arg1 : '4539534204543', arg2: 'visa'},
			dummy320		: {arg1 : '4485640373626', arg2: 'visa'},
			dummy321		: {arg1 : '4929911445746', arg2: 'visa'},
			dummy322		: {arg1 : '4539292550806', arg2: 'visa'},
			dummy323		: {arg1 : '4716523014030', arg2: 'visa'},
			dummy324		: {arg1 : '4024007125152', arg2: 'visa'},
			dummy325		: {arg1 : '4539758883311', arg2: 'visa'},
			dummy326		: {arg1 : '4024007103258', arg2: 'visa'},
			dummy327		: {arg1 : '4916933155767', arg2: 'visa'},
			dummy328		: {arg1 : '4024007159672', arg2: 'visa'},
			dummy329		: {arg1 : '4716935544871', arg2: 'visa'},
			dummy330		: {arg1 : '4929415177779', arg2: 'visa'},
			dummy331		: {arg1 : '4929748547896', arg2: 'visa'},
			dummy332		: {arg1 : '4929153468612', arg2: 'visa'},
			dummy333		: {arg1 : '4539397132104', arg2: 'visa'},
			dummy334		: {arg1 : '4485293435540', arg2: 'visa'},
			dummy335		: {arg1 : '4485799412720', arg2: 'visa'},
			dummy336		: {arg1 : '4916744757686', arg2: 'visa'},
			dummy337		: {arg1 : '4556475655426', arg2: 'visa'},
			dummy338		: {arg1 : '4539400441625', arg2: 'visa'},
			dummy339		: {arg1 : '4485437129173', arg2: 'visa'},
			dummy340		: {arg1 : '4716253605320', arg2: 'visa'},
			dummy341		: {arg1 : '4539366156589', arg2: 'visa'},
			dummy342		: {arg1 : '4916498061392', arg2: 'visa'},
			dummy343		: {arg1 : '4716127163779', arg2: 'visa'},
			dummy344		: {arg1 : '4024007183078', arg2: 'visa'},
			dummy345		: {arg1 : '4041553279654', arg2: 'visa'},
			dummy346		: {arg1 : '4532380121960', arg2: 'visa'},
			dummy347		: {arg1 : '4485906062491', arg2: 'visa'},
			dummy348		: {arg1 : '4539365115149', arg2: 'visa'},
			dummy349		: {arg1 : '4485146516702', arg2: 'visa'},
			//VISA 16 digit
			dummy350		: {arg1 : '4916375389940009', arg2: 'visa'},
			dummy351		: {arg1 : '4929167481032610', arg2: 'visa'},
			dummy352		: {arg1 : '4485029969061519', arg2: 'visa'},
			dummy353		: {arg1 : '4485573845281759', arg2: 'visa'},
			dummy354		: {arg1 : '4485669810383529', arg2: 'visa'},
			dummy355		: {arg1 : '4929615806560327', arg2: 'visa'},
			dummy356		: {arg1 : '4556807505609535', arg2: 'visa'},
			dummy357		: {arg1 : '4532611336232890', arg2: 'visa'},
			dummy358		: {arg1 : '4532201952422387', arg2: 'visa'},
			dummy359		: {arg1 : '4485073797976290', arg2: 'visa'},
			dummy360		: {arg1 : '4024007157580969', arg2: 'visa'},
			dummy361		: {arg1 : '4053740470212274', arg2: 'visa'},
			dummy362		: {arg1 : '4716265831525676', arg2: 'visa'},
			dummy363		: {arg1 : '4024007100222966', arg2: 'visa'},
			dummy364		: {arg1 : '4539556148303244', arg2: 'visa'},
			dummy365		: {arg1 : '4532449879689709', arg2: 'visa'},
			dummy366		: {arg1 : '4916805467840986', arg2: 'visa'},
			dummy367		: {arg1 : '4532155644440233', arg2: 'visa'},
			dummy368		: {arg1 : '4467977802223781', arg2: 'visa'},
			dummy369		: {arg1 : '4539224637000686', arg2: 'visa'},
			dummy370		: {arg1 : '4556629187064965', arg2: 'visa'},
			dummy371		: {arg1 : '4532970205932943', arg2: 'visa'},
			dummy372		: {arg1 : '4821470132041850', arg2: 'visa'},
			dummy373		: {arg1 : '4916214267894485', arg2: 'visa'},
			dummy374		: {arg1 : '4024007169073284', arg2: 'visa'},
			dummy375		: {arg1 : '4716783351296122', arg2: 'visa'},
			dummy376		: {arg1 : '4556480171913795', arg2: 'visa'},
			dummy377		: {arg1 : '4929678411034997', arg2: 'visa'},
			dummy378		: {arg1 : '4682061913519392', arg2: 'visa'},
			dummy379		: {arg1 : '4916495481746474', arg2: 'visa'},
			dummy380		: {arg1 : '4929007108460499', arg2: 'visa'},
			dummy381		: {arg1 : '4539951357838586', arg2: 'visa'},
			dummy382		: {arg1 : '4716482691051558', arg2: 'visa'},
			dummy383		: {arg1 : '4916385069917516', arg2: 'visa'},
			dummy384		: {arg1 : '4929020289494641', arg2: 'visa'},
			dummy385		: {arg1 : '4532176245263774', arg2: 'visa'},
			dummy386		: {arg1 : '4556242273553949', arg2: 'visa'},
			dummy387		: {arg1 : '4481007485188614', arg2: 'visa'},
			dummy388		: {arg1 : '4716533372139623', arg2: 'visa'},
			dummy389		: {arg1 : '4929152038152632', arg2: 'visa'},
			dummy390		: {arg1 : '4539404037310550', arg2: 'visa'},
			dummy391		: {arg1 : '4532800925229140', arg2: 'visa'},
			dummy392		: {arg1 : '4916845885268360', arg2: 'visa'},
			dummy393		: {arg1 : '4394514669078434', arg2: 'visa'},
			dummy394		: {arg1 : '4485611378115042', arg2: 'visa'},
			//Visa Electron
			dummy395		: {arg1 : '4175003346287100', arg2: 'electron'},
			dummy396		: {arg1 : '4913042516577228', arg2: 'electron'},
			dummy397		: {arg1 : '4917592325659381', arg2: 'electron'},
			dummy398		: {arg1 : '4917084924450511', arg2: 'electron'},
			dummy399		: {arg1 : '4917994610643999', arg2: 'electron'},
			dummy400		: {arg1 : '4175005933743585', arg2: 'electron'},
			dummy401		: {arg1 : '4175008373425044', arg2: 'electron'},
			dummy402		: {arg1 : '4913119763664154', arg2: 'electron'},
			dummy403		: {arg1 : '4913189017481812', arg2: 'electron'},
			dummy404		: {arg1 : '4913085104968622', arg2: 'electron'},
			dummy405		: {arg1 : '4175008803122021', arg2: 'electron'},
			dummy406		: {arg1 : '4913294453962489', arg2: 'electron'},
			dummy407		: {arg1 : '4175009797419290', arg2: 'electron'},
			dummy408		: {arg1 : '4175005028142917', arg2: 'electron'},
			dummy409		: {arg1 : '4913940802385364', arg2: 'electron'},
			//Voyager
			dummy410		: {arg1 : '869940697287073', arg2: 'voyager'},
			dummy411		: {arg1 : '869934523596112', arg2: 'voyager'},
			dummy412		: {arg1 : '869958670174621', arg2: 'voyager'},
			dummy413		: {arg1 : '869921250068209', arg2: 'voyager'},
			dummy414		: {arg1 : '869972521242198', arg2: 'voyager'}
		});
		var falseMatches = new Object(
		{
		});
		proceed(matches, falseMatches);
	},
	testValidationComparison : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: {arg1 : 7, arg2 : 'is greater', arg3 : 6},
			dummy1 			: {arg1 : 7, arg2 : '>', arg3 : 6},
			dummy2 			: {arg1 : 6, arg2 : 'is less', arg3 : 7},
			dummy3 			: {arg1 : 6, arg2 : '<', arg3 : 7},
			dummy4 			: {arg1 : 7, arg2 : 'greater or equal', arg3 : 7},
			dummy5 			: {arg1 : 7, arg2 : '>=', arg3 : 7},
			dummy6 			: {arg1 : 7, arg2 : 'greater or equal', arg3 : 6},
			dummy7 			: {arg1 : 7, arg2 : '>=', arg3 : 6},
			dummy8			: {arg1 : 6, arg2 : 'less or equal', arg3 : 7},
			dummy9 			: {arg1 : 6, arg2 : '<=', arg3 : 7},
			dummy10			: {arg1 : 7, arg2 : 'equal to', arg3 : 7},
			dummy11			: {arg1 : 7, arg2 : '==', arg3 : 7},
			dummy12			: {arg1 : 7, arg2 : 'not equal', arg3 : 6},
			dummy13			: {arg1 : 7, arg2 : '!=', arg3 : 6}
		});
		var falseMatches = new Object(
		{
			dummy 			: {arg1 : 6, arg2 : 'is greater', arg3 : 7},
			dummy1 			: {arg1 : 6, arg2 : '>', arg3 : 7},
			dummy2 			: {arg1 : 7, arg2 : 'is less', arg3 : 6},
			dummy3 			: {arg1 : 7, arg2 : '<', arg3 : 6},
			dummy4 			: {arg1 : 6, arg2 : 'greater or equal', arg3 : 7},
			dummy5 			: {arg1 : 6, arg2 : '>=', arg3 : 7},
			dummy6 			: {arg1 : 6, arg2 : 'greater or equal', arg3 : 7},
			dummy7 			: {arg1 : 6, arg2 : '>=', arg3 : 7},
			dummy8 			: {arg1 : 7, arg2 : 'less or equal', arg3 : 6},
			dummy9 			: {arg1 : 7, arg2 : '<=', arg3 : 6},
			dummy10			: {arg1 : 7, arg2 : 'equal to', arg3 : 6},
			dummy11			: {arg1 : 7, arg2 : '==', arg3 : 6},
			dummy12			: {arg1 : 7, arg2 : 'not equal', arg3 : 7},
			dummy13			: {arg1 : 7, arg2 : '!=', arg3 : 7}
		});
		proceed(matches, falseMatches);
	},
	testValidationCustom : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: {arg1 : '12345', arg2 : '[0-9]+'}
		});
		var falseMatches = new Object(
		{
			dummy 			: {arg1 : 'Text', arg2 : '/[0-9]+/'},
			dummy1 			: {arg1 : '123.45', arg2 : '/[0-9]+/'}
		});
		proceed(matches, falseMatches);
	},
	testValidationDate : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: {arg1 : '27-12-2006', arg2 : 'dmy'},
			dummy1 			: {arg1 : '27.12.2006', arg2 : 'dmy'},
			dummy2 			: {arg1 : '27/12/2006', arg2 : 'dmy'},
			dummy3 			: {arg1 : '27 12 2006', arg2 : 'dmy'},
			dummy4 			: {arg1 : '29-02-2004', arg2 : 'dmy'},
			dummy5 			: {arg1 : '29.02.2004', arg2 : 'dmy'},
			dummy6 			: {arg1 : '29/02/2004', arg2 : 'dmy'},
			dummy7 			: {arg1 : '29 02 2004', arg2 : 'dmy'},
			dummy8 			: {arg1 : '27-12-06', arg2 : 'dmy'},
			dummy9 			: {arg1 : '27.12.06', arg2 : 'dmy'},
			dummy10 		: {arg1 : '27/12/06', arg2 : 'dmy'},
			dummy11 		: {arg1 : '27 12 06', arg2 : 'dmy'},
			dummy12 		: {arg1 : '29-02-04', arg2 : 'dmy'},
			dummy13 		: {arg1 : '29.02.04', arg2 : 'dmy'},
			dummy14 		: {arg1 : '29/02/04', arg2 : 'dmy'},
			dummy15 		: {arg1 : '29 02 04', arg2 : 'dmy'},
			dummy16 		: {arg1 : '7-2-06', arg2 : 'dmy'},
			dummy17 		: {arg1 : '7.2.06', arg2 : 'dmy'},
			dummy18 		: {arg1 : '7/2/06', arg2 : 'dmy'},
			dummy19 		: {arg1 : '7 2 06', arg2 : 'dmy'},
			dummy20 		: {arg1 : '29-2-04', arg2 : 'dmy'},
			dummy21 		: {arg1 : '29.2.04', arg2 : 'dmy'},
			dummy22 		: {arg1 : '29/2/04', arg2 : 'dmy'},
			dummy23 		: {arg1 : '29 2 04', arg2 : 'dmy'},
			dummy24 		: {arg1 : '7-2-2006', arg2 : 'dmy'},
			dummy25 		: {arg1 : '7.2.2006', arg2 : 'dmy'},
			dummy26 		: {arg1 : '7/2/2006', arg2 : 'dmy'},
			dummy27 		: {arg1 : '7 2 2006', arg2 : 'dmy'},
			dummy28 		: {arg1 : '29-2-2004', arg2 : 'dmy'},
			dummy29 		: {arg1 : '29.2.2004', arg2 : 'dmy'},
			dummy30 		: {arg1 : '29/2/2004', arg2 : 'dmy'},
			dummy31 		: {arg1 : '29 2 2004', arg2 : 'dmy'},
			dummy32 		: {arg1 : '12-27-2006', arg2 : 'mdy'},
			dummy33 		: {arg1 : '12.27.2006', arg2 : 'mdy'},
			dummy34 		: {arg1 : '12/27/2006', arg2 : 'mdy'},
			dummy35 		: {arg1 : '12 27 2006', arg2 : 'mdy'},
			dummy36 		: {arg1 : '02-29-2004', arg2 : 'mdy'},
			dummy37 		: {arg1 : '02.29.2004', arg2 : 'mdy'},
			dummy38 		: {arg1 : '02/29/2004', arg2 : 'mdy'},
			dummy39 		: {arg1 : '02 29 2004', arg2 : 'mdy'},
			dummy40 		: {arg1 : '12-27-06', arg2 : 'mdy'},
			dummy41 		: {arg1 : '12.27.06', arg2 : 'mdy'},
			dummy42 		: {arg1 : '12/27/06', arg2 : 'mdy'},
			dummy43 		: {arg1 : '12 27 06', arg2 : 'mdy'},
			dummy44 		: {arg1 : '02-29-04', arg2 : 'mdy'},
			dummy45 		: {arg1 : '02.29.04', arg2 : 'mdy'},
			dummy46 		: {arg1 : '02/29/04', arg2 : 'mdy'},
			dummy47 		: {arg1 : '02 29 04', arg2 : 'mdy'},
			dummy48 		: {arg1 : '2-7-06', arg2 : 'mdy'},
			dummy49 		: {arg1 : '2.7.06', arg2 : 'mdy'},
			dummy50 		: {arg1 : '2/7/06', arg2 : 'mdy'},
			dummy51 		: {arg1 : '2 7 06', arg2 : 'mdy'},
			dummy52 		: {arg1 : '2-29-04', arg2 : 'mdy'},
			dummy53 		: {arg1 : '2.29.04', arg2 : 'mdy'},
			dummy54 		: {arg1 : '2/29/04', arg2 : 'mdy'},
			dummy55 		: {arg1 : '2 29 04', arg2 : 'mdy'},
			dummy56 		: {arg1 : '2-7-2006', arg2 : 'mdy'},
			dummy57 		: {arg1 : '2.7.2006', arg2 : 'mdy'},
			dummy58 		: {arg1 : '2/7/2006', arg2 : 'mdy'},
			dummy59 		: {arg1 : '2 7 2006', arg2 : 'mdy'},
			dummy60 		: {arg1 : '2-29-2004', arg2 : 'mdy'},
			dummy61 		: {arg1 : '2.29.2004', arg2 : 'mdy'},
			dummy62 		: {arg1 : '2/29/2004', arg2 : 'mdy'},
			dummy63 		: {arg1 : '2 29 2004', arg2 : 'mdy'},
			dummy64 		: {arg1 : '2006-12-27', arg2 : 'ymd'},
			dummy65 		: {arg1 : '2006.12.27', arg2 : 'ymd'},
			dummy66 		: {arg1 : '2006/12/27', arg2 : 'ymd'},
			dummy67 		: {arg1 : '2006 12 27', arg2 : 'ymd'},
			dummy68 		: {arg1 : '2004-02-29', arg2 : 'ymd'},
			dummy69 		: {arg1 : '2004.02.29', arg2 : 'ymd'},
			dummy70 		: {arg1 : '2004/02/29', arg2 : 'ymd'},
			dummy71 		: {arg1 : '2004 02 29', arg2 : 'ymd'},
			dummy72 		: {arg1 : '06-12-27', arg2 : 'ymd'},
			dummy73 		: {arg1 : '06.12.27', arg2 : 'ymd'},
			dummy74 		: {arg1 : '06/12/27', arg2 : 'ymd'},
			dummy75 		: {arg1 : '06 12 27', arg2 : 'ymd'},
			dummy76 		: {arg1 : '2004-02-29', arg2 : 'ymd'},
			dummy77 		: {arg1 : '2004.02.29', arg2 : 'ymd'},
			dummy78 		: {arg1 : '2004/02/29', arg2 : 'ymd'},
			dummy79 		: {arg1 : '2004 02 29', arg2 : 'ymd'},
			dummy80 		: {arg1 : '27 December 2006', arg2 : 'dMy'},
			dummy81 		: {arg1 : '27 Dec 2006', arg2 : 'dMy'},
			dummy82 		: {arg1 : '29 February 2004', arg2 : 'dMy'},
			dummy83 		: {arg1 : 'December 27, 2006', arg2 : 'Mdy'},
			dummy84 		: {arg1 : 'Dec 27, 2006', arg2 : 'Mdy'},
			dummy85 		: {arg1 : 'December 27 2006', arg2 : 'Mdy'},
			dummy86 		: {arg1 : 'Dec 27 2006', arg2 : 'Mdy'},
			dummy87 		: {arg1 : 'February 29, 2004', arg2 : 'Mdy'},
			dummy88 		: {arg1 : 'Feb 29, 2004', arg2 : 'Mdy'},
			dummy89 		: {arg1 : 'February 29 2004', arg2 : 'Mdy'},
			dummy90 		: {arg1 : 'Feb 29 2004', arg2 : 'Mdy'},
			dummy91 		: {arg1 : 'December 2006', arg2 : 'My'},
			dummy92 		: {arg1 : 'Dec 2006', arg2 : 'My'},
			dummy93 		: {arg1 : 'December/2006', arg2 : 'My'},
			dummy94 		: {arg1 : 'Dec/2006', arg2 : 'My'},
			dummy95 		: {arg1 : '12/2006', arg2 : 'my'},
			dummy96 		: {arg1 : '12-2006', arg2 : 'my'},
			dummy97 		: {arg1 : '12.2006', arg2 : 'my'},
			dummy98 		: {arg1 : '12 2006', arg2 : 'my'}
		});
		var falseMatches = new Object(
		{
			dummy 			: {arg1 : '00-00-0000', arg2 : 'dmy'},
			dummy1 			: {arg1 : '00.00.0000', arg2 : 'dmy'},
			dummy2 			: {arg1 : '00/00/0000', arg2 : 'dmy'},
			dummy3 			: {arg1 : '00 00 0000', arg2 : 'dmy'},
			dummy4 			: {arg1 : '31-11-2006', arg2 : 'dmy'},
			dummy5 			: {arg1 : '31.11.2006', arg2 : 'dmy'},
			dummy6 			: {arg1 : '31/11/2006', arg2 : 'dmy'},
			dummy7 			: {arg1 : '31 11 2006', arg2 : 'dmy'},
			dummy8 			: {arg1 : '29-02-2006', arg2 : 'dmy'},
			dummy9 			: {arg1 : '29.02.2006', arg2 : 'dmy'},
			dummy10 		: {arg1 : '29/02/2006', arg2 : 'dmy'},
			dummy11 		: {arg1 : '29 02 2006', arg2 : 'dmy'},
			dummy12 		: {arg1 : '00-00-00', arg2 : 'dmy'},
			dummy13 		: {arg1 : '00.00.00', arg2 : 'dmy'},
			dummy14 		: {arg1 : '00/00/00', arg2 : 'dmy'},
			dummy15 		: {arg1 : '00 00 00', arg2 : 'dmy'},
			dummy16 		: {arg1 : '31-11-06', arg2 : 'dmy'},
			dummy17 		: {arg1 : '31.11.06', arg2 : 'dmy'},
			dummy18 		: {arg1 : '31/11/06', arg2 : 'dmy'},
			dummy19 		: {arg1 : '31 11 06', arg2 : 'dmy'},
			dummy20 		: {arg1 : '29-02-06', arg2 : 'dmy'},
			dummy21 		: {arg1 : '29.02.06', arg2 : 'dmy'},
			dummy22 		: {arg1 : '29/02/06', arg2 : 'dmy'},
			dummy23 		: {arg1 : '29 02 06', arg2 : 'dmy'},
			dummy24 		: {arg1 : '0-0-00', arg2 : 'dmy'},
			dummy25 		: {arg1 : '0.0.00', arg2 : 'dmy'},
			dummy26 		: {arg1 : '0/0/00', arg2 : 'dmy'},
			dummy27 		: {arg1 : '0 0 00', arg2 : 'dmy'},
			dummy28 		: {arg1 : '32-2-06', arg2 : 'dmy'},
			dummy29 		: {arg1 : '32.2.06', arg2 : 'dmy'},
			dummy30 		: {arg1 : '32/2/06', arg2 : 'dmy'},
			dummy31 		: {arg1 : '32 2 06', arg2 : 'dmy'},
			dummy32 		: {arg1 : '29-2-06', arg2 : 'dmy'},
			dummy33 		: {arg1 : '29.2.06', arg2 : 'dmy'},
			dummy34 		: {arg1 : '29/2/06', arg2 : 'dmy'},
			dummy35 		: {arg1 : '29 2 06', arg2 : 'dmy'},
			dummy36 		: {arg1 : '0-0-0000', arg2 : 'dmy'},
			dummy37 		: {arg1 : '0.0.0000', arg2 : 'dmy'},
			dummy38 		: {arg1 : '0/0/0000', arg2 : 'dmy'},
			dummy39 		: {arg1 : '0 0 0000', arg2 : 'dmy'},
			dummy40 		: {arg1 : '32-2-2006', arg2 : 'dmy'},
			dummy41 		: {arg1 : '32.2.2006', arg2 : 'dmy'},
			dummy42 		: {arg1 : '32/2/2006', arg2 : 'dmy'},
			dummy43 		: {arg1 : '32 2 2006', arg2 : 'dmy'},
			dummy44 		: {arg1 : '29-2-2006', arg2 : 'dmy'},
			dummy45 		: {arg1 : '29.2.2006', arg2 : 'dmy'},
			dummy46 		: {arg1 : '29/2/2006', arg2 : 'dmy'},
			dummy47 		: {arg1 : '29 2 2006', arg2 : 'dmy'},
			dummy48 		: {arg1 : '00-00-0000', arg2 : 'mdy'},
			dummy49 		: {arg1 : '00.00.0000', arg2 : 'mdy'},
			dummy50 		: {arg1 : '00/00/0000', arg2 : 'mdy'},
			dummy51 		: {arg1 : '00 00 0000', arg2 : 'mdy'},
			dummy52 		: {arg1 : '11-31-2006', arg2 : 'mdy'},
			dummy53 		: {arg1 : '11.31.2006', arg2 : 'mdy'},
			dummy54 		: {arg1 : '11/31/2006', arg2 : 'mdy'},
			dummy55 		: {arg1 : '11 31 2006', arg2 : 'mdy'},
			dummy56 		: {arg1 : '02-29-2006', arg2 : 'mdy'},
			dummy57 		: {arg1 : '02.29.2006', arg2 : 'mdy'},
			dummy58 		: {arg1 : '02/29/2006', arg2 : 'mdy'},
			dummy59 		: {arg1 : '02 29 2006', arg2 : 'mdy'},
			dummy60 		: {arg1 : '00-00-00', arg2 : 'mdy'},
			dummy61 		: {arg1 : '00.00.00', arg2 : 'mdy'},
			dummy62 		: {arg1 : '00/00/00', arg2 : 'mdy'},
			dummy63 		: {arg1 : '00 00 00', arg2 : 'mdy'},
			dummy64 		: {arg1 : '11-31-06', arg2 : 'mdy'},
			dummy65 		: {arg1 : '11.31.06', arg2 : 'mdy'},
			dummy66 		: {arg1 : '11/31/06', arg2 : 'mdy'},
			dummy67 		: {arg1 : '11 31 06', arg2 : 'mdy'},
			dummy68 		: {arg1 : '02-29-06', arg2 : 'mdy'},
			dummy69 		: {arg1 : '02.29.06', arg2 : 'mdy'},
			dummy70 		: {arg1 : '02/29/06', arg2 : 'mdy'},
			dummy71 		: {arg1 : '02 29 06', arg2 : 'mdy'},
			dummy72 		: {arg1 : '0-0-00', arg2 : 'mdy'},
			dummy73 		: {arg1 : '0.0.00', arg2 : 'mdy'},
			dummy74 		: {arg1 : '0/0/00', arg2 : 'mdy'},
			dummy75 		: {arg1 : '0 0 00', arg2 : 'mdy'},
			dummy76 		: {arg1 : '2-32-06', arg2 : 'mdy'},
			dummy77 		: {arg1 : '2.32.06', arg2 : 'mdy'},
			dummy78 		: {arg1 : '2/32/06', arg2 : 'mdy'},
			dummy79 		: {arg1 : '2 32 06', arg2 : 'mdy'},
			dummy80 		: {arg1 : '2-29-06', arg2 : 'mdy'},
			dummy81 		: {arg1 : '2.29.06', arg2 : 'mdy'},
			dummy82 		: {arg1 : '2/29/06', arg2 : 'mdy'},
			dummy83 		: {arg1 : '2 29 06', arg2 : 'mdy'},
			dummy84 		: {arg1 : '0-0-0000', arg2 : 'mdy'},
			dummy85 		: {arg1 : '0.0.0000', arg2 : 'mdy'},
			dummy86 		: {arg1 : '0/0/0000', arg2 : 'mdy'},
			dummy87 		: {arg1 : '0 0 0000', arg2 : 'mdy'},
			dummy88 		: {arg1 : '2-32-2006', arg2 : 'mdy'},
			dummy89 		: {arg1 : '2.32.2006', arg2 : 'mdy'},
			dummy90 		: {arg1 : '2/32/2006', arg2 : 'mdy'},
			dummy91 		: {arg1 : '2 32 2006', arg2 : 'mdy'},
			dummy92 		: {arg1 : '2-29-2006', arg2 : 'mdy'},
			dummy93 		: {arg1 : '2.29.2006', arg2 : 'mdy'},
			dummy94 		: {arg1 : '2/29/2006', arg2 : 'mdy'},
			dummy95 		: {arg1 : '2 29 2006', arg2 : 'mdy'},
			dummy96 		: {arg1 : '2006-11-31', arg2 : 'ymd'},
			dummy97 		: {arg1 : '2006.11.31', arg2 : 'ymd'},
			dummy98 		: {arg1 : '2006/11/31', arg2 : 'ymd'},
			dummy99 		: {arg1 : '2006 11 31', arg2 : 'ymd'},
			dummy100 		: {arg1 : '2006-02-29', arg2 : 'ymd'},
			dummy101 		: {arg1 : '2006.02.29', arg2 : 'ymd'},
			dummy102 		: {arg1 : '2006/02/29', arg2 : 'ymd'},
			dummy103 		: {arg1 : '2006 02 29', arg2 : 'ymd'},
			dummy104 		: {arg1 : '12/27/2600', arg2 : 'ymd'},
			dummy105 		: {arg1 : '12.27.2600', arg2 : 'ymd'},
			dummy106 		: {arg1 : '12/27/2600', arg2 : 'ymd'},
			dummy107 		: {arg1 : '12 27 2600', arg2 : 'ymd'},
			dummy108 		: {arg1 : '06-11-31', arg2 : 'ymd'},
			dummy109 		: {arg1 : '06.11.31', arg2 : 'ymd'},
			dummy110 		: {arg1 : '06/11/31', arg2 : 'ymd'},
			dummy111 		: {arg1 : '06 11 31', arg2 : 'ymd'},
			dummy112 		: {arg1 : '2006-02-29', arg2 : 'ymd'},
			dummy113 		: {arg1 : '2006.02.29', arg2 : 'ymd'},
			dummy114 		: {arg1 : '2006/02/29', arg2 : 'ymd'},
			dummy115 		: {arg1 : '2006 02 29', arg2 : 'ymd'},
			dummy116 		: {arg1 : '2006 Dec 27', arg2 : 'dMy'},
			dummy117 		: {arg1 : '2006 December 27', arg2 : 'dMy'},
			dummy118 		: {arg1 : '29 February 2006', arg2 : 'dMy'},
			dummy119 		: {arg1 : '27 Dec 2006', arg2 : 'Mdy'},
			dummy120 		: {arg1 : '2006 December 27', arg2 : 'Mdy'},
			dummy121 		: {arg1 : 'February 29, 2006', arg2 : 'Mdy'},
			dummy122 		: {arg1 : '12/06', arg2 : 'my'},
			dummy123 		: {arg1 : '12-06', arg2 : 'my'},
			dummy124 		: {arg1 : '12.06', arg2 : 'my'},
			dummy125 		: {arg1 : '12 06', arg2 : 'my'}
		});
		proceed(matches, falseMatches);
	},
	testValidationBoolean : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: '0',
			dummy1 			: '1',
			dummy2 			: 0,
			dummy3 			: 1,
			dummy4 			: true,
			dummy5 			: false
		});
		var falseMatches = new Object(
		{
			dummy 			: 'true',
			dummy1 			: 'false',
			dummy2 			: '-1',
			dummy3 			: '2',
			dummy4 			: 'Boo!'
		});
		proceed(matches, falseMatches);
	},
	testValidationMaxLength : function(proceed)
	{
		var matches = new Object(
		{
			dummy1 			: {arg1 : 'abc', arg2 : 3}
		});
		var falseMatches = new Object(
		{
			dummy 			: {arg1 : 'ab', arg2 : 3},
			dummy 			: {arg1 : 'abcd', arg2 : 3}
		});
		proceed(matches, falseMatches);
	},
	testValidationMinLength : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: {arg1 : 'abcd', arg2 : 3},
			dummy1 			: {arg1 : 'abc', arg2 : 3}
		});
		var falseMatches = new Object(
		{
			dummy 			: {arg1 : 'ab', arg2 : 3}
		});
		proceed(matches, falseMatches);
	},
	testValidationInList : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: {arg1 : 'one', arg2 : ['one', 'two']},
			dummy1 			: {arg1 : 'two', arg2 : ['one', 'two']}
		});
		var falseMatches = new Object(
		{
			dummy 			: {arg1 : 'three', arg2 : ['one', 'two']}
		});
		proceed(matches, falseMatches);
	},
	testValidationNumeric : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: '12345',
			dummy1 			: '-12345',
			dummy2 			: '+12345',
			dummy3 			: '1.2345',
			dummy4 			: '-1.2345',
			dummy5 			: '+1.2345'
		});
		var falseMatches = new Object(
		{
			dummy 			: '--12345',
			dummy1 			: '++12345',
			dummy2 			: 'a12345',
			dummy3 			: '12345z',
			dummy4 			: '-a12345z',
			dummy5 			: '-',
			dummy6 			: '123-12345',
			dummy7 			: '1..2345',
			dummy8 			: '-1..2345',
			dummy9 			: '+1..2345'
			//dummy10			: '.2345',
			//dummy11			: '12345.'
		});
		proceed(matches, falseMatches);
	},
	testValidationRange : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: {arg1 : 20, arg2 : 1, arg3 : 100},
			dummy1 			: {arg1 : .5, arg2 : 0, arg3 : 100},
			dummy2 			: {arg1 : 5},
			dummy3 			: {arg1 : -5, arg2 : -10, arg3 : 1}
		});
		var falseMatches = new Object(
		{
			dummy 			: {arg1 : 'word'},
			dummy1 			: {arg1 : 20, arg2 : 100, arg3 : 1},
			dummy2 			: {arg1 : .5, arg2 : 1, arg3 : 100}
		});
		proceed(matches, falseMatches);
	},
	testValidationExtension : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: {arg1 : 'extension.jpeg', arg2 : 'img'},
			dummy1 			: {arg1 : 'extension.JPEG', arg2 : 'image'},
			dummy2 			: {arg1 : 'extension.gif', arg2 : 'img'},
			dummy3 			: {arg1 : 'extension.GIF', arg2 : 'image'},
			dummy4 			: {arg1 : 'extension.png', arg2 : 'img'},
			dummy5 			: {arg1 : 'extension.jpg', arg2 : 'image'},
			dummy6 			: {arg1 : 'extension.JPG', arg2 : 'img'},
			dummy7 			: {arg1 : 'extension.pdf', arg2 : ['PDF']},
			dummy8 			: {arg1 : ['extension.JPG', 'extension.gif', 'extension.png'], arg2 : 'img'}
			//dummy9 			: {arg1 : ['file' => ['name' => 'file.jpg']], arg2 : 'img'},
			//dummy10			: {arg1 : ['file1' => ['name' => 'file.jpg'],	'file2' => ['name' => 'file.jpg'], 'file3' => ['name' => 'file.jpg']], arg2 : 'img'}
		});
		var falseMatches = new Object(
		{
			dummy 			: {arg1 : 'noextension', arg2 : 'img'},
			dummy1 			: {arg1 : 'extension.jpg', arg2 : ['GIF']}
			//dummy2 			: {arg1 : ['file1' => ['name' => 'file.jpg'], 'file2' => ['name' => 'file.jpg'],'file3' => ['name' => 'file.jpg']], arg2 : ['gif']},
			//dummy3 			: {arg1 : ['noextension', 'extension.JPG', 'extension.gif', 'extension.png'], arg2 : 'image'},
			//dummy4 			: {arg1 : ['extension.pdf', 'extension.JPG', 'extension.gif', 'extension.png'], arg2 : 'img'}
		});
		proceed(matches, falseMatches);
	},
	testValidationMoney : function(proceed)
	{
		var matches = new Object(
		{
			dummy 			: '$100',
			dummy1 			: '$100.11',
			dummy2 			: '100',
			dummy3 			: '100.11',
		});
		var falseMatches = new Object(
		{
			dummy 			: '$100.1111',
			dummy1 			: 'text',
			dummy2 			: '100.1$',
			dummy3 			: '100.1111$',
			dummy4 			: '100.1111'
		});
		proceed(matches, falseMatches);
	},
	__testExpression : function(expression, matches, falseMatches)
	{
		with(this)
		{
			var regexp = Validation.Expressions[expression];
			for(type in matches)
			{
				message = "type: %. doesn't match, but should".replace('%',type);
				assertMatch(regexp, matches[type],message);			
			}
			for(type in falseMatches)
			{
				message = "type: %. match, but shouldn't".replace('%',type);
				match = regexp.test(falseMatches[type]);
				assertEqual(false, match, message);	
			}
		}
	},
	__test : function(testfunc, matches, falseMatches)
	{
		with(this)
		{
			for(type in matches)
			{
				if (typeof matches[type] != 'object' || Object.isArray(matches[type]))
					matches[type] = new Object({ arg1 : matches[type] });
				var args = $H(matches[type]).values();
				var ret = Validation[testfunc].apply(Validation, args);
				message = "type: %. doesn't match, but should".replace('%',type);
				assertEqual(true, ret, message);
			}
			for(type in falseMatches)
			{
				if (typeof falseMatches[type] != 'object' || Object.isArray(falseMatches[type]))
					falseMatches[type] = new Object({ arg1 : falseMatches[type] });
				var args = $H(falseMatches[type]).values();
				var ret = Validation[testfunc].apply(Validation, args);
				message = "type: %. match, but shouldn't".replace('%',type);
				assertEqual(false, ret, message);
			}
		}
	}
});
